Swift 5

Swift 5

变量 Variable

基本类型

  • 文字:字符串
1
var bullishString = "牛市真的来了!"
  • 数字:整数、小数
1
var btcPrice = 11000
  • flag:布尔类
1
var bullish : Bool = true

Swift 具有类型推断初始化赋值,不用显示写出类型
var bullish : Bool = true 中的:Bool 可以省略 简写为var bullish = true

容器类型:

数组:

1
var avengers = ["Iron man", "Thor" , "Black widow"]

增删改查

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
//追加
avengers.append("Eagle eye")
//插入
avengers.insert("Spider man", at: 0)
//删
avengers.remove(at: 2)
// 查找 & 修改
avengers[0] = "Captian America"

var has = avengers.contains("1")
var thorIndex = avengers.firstIndex(of: "Thor")

for av in avengers {
print(av)
}

排序

1
let avs2 = avengers.sorted()

转换

1
2
3
4
5
6
7
//let avs3 = avengers.map { (str) -> String in
// return "复仇者" + str
//}

let avs3 = avengers.map {
return "复仇者:" + $0
}

自定义类型

内部聚合

1
2
3
4
5
6
7
8
9
10
11
12
13
14
struct Human {
var name = ""
var age = 0
var height = 0

func shuoming() {
print("\(name)的年龄是\(age),身高为\(height)cm.")
}
}

var tonyStark = Human(name: "Iron Man", age: 40, height: 180)

tonyStark.shuoming()
print(tonyStark.name)

外部组合

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
protocol flyable {
func takeoff(speed : Int)
}

protocol armed {
func attack(auto: Bool)
}

extension Human: flyable, armed {
func takeoff(speed : Int) {
print("\(name)将以时速\(speed)起飞")
}

func attack(auto: Bool) {
if auto {
print("AI自动射击")
}else {
print("单点射击")
}
}

}

tonyStark.takeoff(speed: 100)
tonyStark.attack(auto: false)

函数

1
2
3
4
5
6
7
8
9
10
11
/// 函数:
/// func funcName(参数) -> 返回值类型 {
/// return x
/// }
func bigger(a : Int , b : Int ) -> Int {
if a > b {
return a
} else {
return b
}
}

泛型

1
2
3
4
5
6
7
8
/// 泛型参数的使用
func biggerFunc<T: Comparable>(a : T , b : T ) -> T {
if a > b {
return a
} else {
return b
}
}